﻿var zombies = zombies || {};
var windowURL = window.URL || window.webkitURL;

zombies.ChangeAvatar = function () {
    var self = this;

    self.Loaded = ko.observable(false);

    self.Avatar = ko.observable("../Advertise/DefaultAssets/NoAvatar.gif");
    self.FullName = ko.observable();

    self.imageFile = ko.observable();
    self.imageObjectURL = ko.observable();

    self.UpdateAvatar = function (formElement) {
        $(formElement).ajaxSubmit({
            type: "POST",
            url: "/api/MemberProfile/ChangeAvatar",
            dataType: "json",
            success: function (data) {
                self.Avatar(data);
                toastr.success('Cập nhật ảnh đại diện thành công!');          
            },
            error: function () {
                toastr.error('Cập nhật ảnh đại diện thất bại!');
            }
        });
    }
};

ko.bindingHandlers.file = {
    init: function (element, valueAccessor) {
        $(element).change(function () {
            var file = this.files[0];
            if (ko.isObservable(valueAccessor())) {
                valueAccessor()(file);
            }
        });
    },

    update: function (element, valueAccessor, allBindingsAccessor) {
        var file = ko.utils.unwrapObservable(valueAccessor());
        var bindings = allBindingsAccessor();

        if (bindings.fileObjectURL && ko.isObservable(bindings.fileObjectURL)) {
            var oldUrl = bindings.fileObjectURL();
            if (oldUrl) {
                windowURL.revokeObjectURL(oldUrl);
            }
            bindings.fileObjectURL(file && windowURL.createObjectURL(file));
        }

        if (bindings.fileBinaryData && ko.isObservable(bindings.fileBinaryData)) {
            if (!file) {
                bindings.fileBinaryData(null);
            } else {
                var reader = new FileReader();
                reader.onload = function (e) {
                    bindings.fileBinaryData(e.target.result);
                };
                reader.readAsArrayBuffer(file);
            }
        }

    }
};

var load = function (id) {
    $.ajax({
        type: "GET",
        url: "/api/MemberProfile/GetUserProfile",
        contentType: "application/json",
        dataType: 'json'
    }).done(function (item) {
        if (item.Avatar != null && item.Avatar != '') {
            changeAvatarViewModel.Avatar(item.Avatar);
        }
        changeAvatarViewModel.FullName(item.FirstName + ' ' + item.LastName);
        changeAvatarViewModel.Loaded(true);
    });
};

var changeAvatarViewModel;
$(document).ready(function () {
    $("#imgthumb").click(function () {
        $("#imgselect").trigger('click');
    });
    changeAvatarViewModel = new zombies.ChangeAvatar();
    load();
    ko.applyBindings(changeAvatarViewModel, document.getElementById("my-container"));
});